/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.aspas.persistencia;

import br.com.aspas.modelo.AtividadeInscricao;
import br.com.aspas.modelo.Evento;
import br.com.aspas.util.AbstractDAO;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;

/**
 *
 * @author gimmli
 */
public class AtividadeInscricaoDao extends AbstractDAO {

    public AtividadeInscricaoDao() {
    }

    public void inserir(AtividadeInscricao atividadeInscricao) {
        atividadeInscricao.setDataInclusao(new Date());
        insert(atividadeInscricao);
    }

    public AtividadeInscricao findByPk(Integer pKey) {
        return (AtividadeInscricao) findByPk(AtividadeInscricao.class, pKey);
    }

    public Boolean remove(Integer id) {
        delete(id,AtividadeInscricao.class);
        return new Boolean(true);
    }

    public void altera(AtividadeInscricao atividadeInscricao) {
        atividadeInscricao.setDataModificacao(new Date());
        update(atividadeInscricao);
    }

    public List<AtividadeInscricao> findAllAtividadeInscricao() {
        em = emf.createEntityManager();
        List<AtividadeInscricao> listAtividadeInscricao = em.createQuery("SELECT object(a) FROM AtividadeInscricao as a ").getResultList();
        em.close();
        return listAtividadeInscricao;
    }

    public List<AtividadeInscricao> findAtividadeInscricao(String descricao) {
        em = emf.createEntityManager();
        List<AtividadeInscricao> listAtividadeInscricao = em.createQuery("SELECT object(a) FROM AtividadeInscricao as a WHERE "
                + "a.nome LIKE '%"+descricao+ "%'").getResultList();
        em.close();
        return listAtividadeInscricao;
    }

    public List<AtividadeInscricao> findAtividadeInscricaoAspas() {
        em = emf.createEntityManager();
        List<AtividadeInscricao> listAtividadeInscricao = em.createQuery("SELECT object(a) FROM AtividadeInscricao as a ").getResultList();
        //where a.codigo in(15,31,32)
        em.close();
        return listAtividadeInscricao;
    }
    
    public List<AtividadeInscricao> findAtividadeInscricao(Evento evento) {
        em = emf.createEntityManager();
        List<AtividadeInscricao> listAtividadeInscricao;
        Query q = em.createQuery("SELECT object(a) FROM AtividadeInscricao as a WHERE "
                + "a.codigo IN (SELECT b.atividadeInscricao.codigo FROM ValidadeInscricao b WHERE b.evento.codigo = :evento)");
        q.setParameter("evento", evento.getCodigo());
        listAtividadeInscricao = q.getResultList();
        em.close();
        return listAtividadeInscricao;
    }
}
